import menuButton from './menuButton';
import formula from '../global/formula';
import Store from '../store';
import flatpickr from 'flatpickr';
import dayjs from "dayjs";
import { update, datenum_local } from '../global/format';
import { setCellValue, setCellFormat } from '../global/api';

const fitFormat = (formatStr) => {
    let dateFormat = formatStr.replace(/y/g, 'Y');
    dateFormat = dateFormat.replace(/d/g, 'D');
    dateFormat = dateFormat.replace(/h/g, 'H');

    dateFormat = dateFormat.replace(/上午\/下午/g, 'A');
    dateFormat = dateFormat.replace(/上午/g, 'A');
    dateFormat = dateFormat.replace(/下午/g, 'A');

    dateFormat = dateFormat.replace(/AM\/PM/g, 'A');
    dateFormat = dateFormat.replace(/AM/g, 'A');
    dateFormat = dateFormat.replace(/PM/g, 'A');
    dateFormat = dateFormat.replace(/\"/g, '');

    if (dateFormat.includes('A')) {
        dateFormat = dateFormat.replace(/H/g, 'h');
    }
    return dateFormat;
};

const cellDatePickerCtrl = {
    cellFocus: function (r, c, cell) {
        let row = Store.visibledatarow[r],
            row_pre = r == 0 ? 0 : Store.visibledatarow[r - 1];
        let col = Store.visibledatacolumn[c],
            col_pre = c == 0 ? 0 : Store.visibledatacolumn[c - 1];

        let margeset = menuButton.mergeborer(Store.flowdata, r, c);
        let type = cell.ct.fa || 'YYYY-MM-DD';
        let defaultDate = update('yyyy-MM-dd hh:mm:ss', cell.v);
        let dateFormat = fitFormat(type);
        let enableTime = false;
        let noCalendar = false;
        let enableSeconds = false;
        let time_24hr = true;
        let hasChineseTime = false;

        if (!!margeset) {
            row = margeset.row[1];
            row_pre = margeset.row[0];

            col = margeset.column[1];
            col_pre = margeset.column[0];
        }

        // $(".cell-date-picker").show().css({
        //     width: col - col_pre + 1,
        //     height: row - row_pre + 1,
        //     left: col_pre,
        //     top: row_pre
        // });

        if (/[上午下午]/.test(type)) {
            hasChineseTime = true;
        }
        if (/[Hhms]/.test(dateFormat)) {
            enableTime = true;
        }
        if (!/[YMD]/.test(dateFormat)) {
            noCalendar = true;
        }
        if (/s/.test(dateFormat)) {
            enableSeconds = true;
        }
        if (/A/.test(dateFormat)) {
            time_24hr = false;
        }

        // const fp = flatpickr('#luckysheet-input-box', {
        //     allowInput: false,
        //     noCalendar,
        //     enableSeconds,
        //     enableTime,
        //     dateFormat,
        //     time_24hr,
        //     defaultDate,
        //     onClose () {
        //         setTimeout(() => {
        //             fp.destroy();
        //         }, 0);
        //     },
        //     parseDate: (datestr, format) => {
        //         return dayjs(datestr).toDate();
        //     },
        //     formatDate: (date, format, locale) => {
        //         if (hasChineseTime) {
        //             return dayjs(date).format(format).replace('AM', '上午').replace('PM', '下午');
        //         }
        //         return dayjs(date).format(format);
        //     },
        //     onChange: function (selectedDates, dateStr) {
        //         let currentVal = datenum_local(new Date(selectedDates));
        //         $("#luckysheet-rich-text-editor").html(dateStr);
        //         setCellValue(r, c, currentVal, { isRefresh: false });
        //         setCellFormat(r, c, 'ct', cell.ct);
        //         if (!enableTime) {
        //             formula.updatecell(Store.luckysheetCellUpdate[0], Store.luckysheetCellUpdate[1]);
        //         }
        //     }
        // });

        $("#luckysheet-input-box").click();
    }
};

export default cellDatePickerCtrl;
